package com.star.star.mapper;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.star.star.dto.StarArtPageDTO;
import com.star.star.dto.StarArtPageWxuserDTO;
import com.star.star.entity.StarArt;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.star.star.vo.*;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 艺人作品 Mapper 接口
 *
 * @author yangzj
 */
public interface StarArtMapper extends BaseMapper<StarArt> {

    /**
     * 分页
     *
     * @param dto 入参
     * @return {@link IPage}<{@link StarArtPageVO}>
     */
    IPage<StarArtPageVO> page(@Param("page") StarArtPageDTO dto);

    /**
     * 获取详情
     *
     * @param id     ID
     * @param userId 用户ID
     * @return {@link StarArtDetailWxuserVO}
     */
    StarArtDetailWxuserVO getDetailWxuser(@Param("id") Long id, @Param("userId") Long userId);

    /**
     * 分页-微信小程序（用户端）
     *
     * @param dto 入参
     * @return {@link IPage}<{@link StarArtPageWxuserVO}>
     */
    IPage<StarArtPageWxuserVO> pageWxuser(@Param("page") StarArtPageWxuserDTO dto);

    /**
     * 统计-微信小程序（用户端）
     *
     * @param userId 用户ID
     * @return {@link StarArtCountWxuserVO}
     */
    StarArtCountWxuserVO countWxuser(@Param("userId") Long userId);

    /**
     * 根据播放排序取前几-微信小程序（用户端）
     *
     * @param starIds 艺人ids
     * @return {@link List}<{@link StarArt}>
     */
    List<StarArt> listPlayTop(@Param("starIds") List<Long> starIds);

    /**
     * 作品列表
     *
     * @param starId      艺人ID
     * @param isPublish   是否发布
     * @param auditStatus 审核状态
     * @param isEmpower   是否授权
     * @return {@link List}<{@link StarArtListVO}>
     */
    List<StarArtListVO> listByStarId(@Param("starId") Long starId, @Param("isPublish") Boolean isPublish
            , @Param("auditStatus") Integer auditStatus, @Param("isEmpower") Boolean isEmpower);
}
